﻿using Styx;
using Styx.Common;
using Styx.CommonBot;
using Styx.CommonBot.Frames;
using Styx.CommonBot.Profiles;
using Styx.Helpers;
using Styx.WoWInternals;
using Styx.WoWInternals.WoWObjects;

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Windows.Forms;

using BrodieMobList;

using DefaultValue = Styx.Helpers.DefaultValueAttribute;
using System.Windows.Media;

namespace BrodiesPlugin
{
    public partial class BrodiesPluginUI : Form
    {
        public string pathToCharSettings = Path.Combine(Utilities.AssemblyDirectory + @"\Plugins\BrodiesPlugin\Settings\Char" + Me.Name + ".xml");
        public string pathToSettings = Path.Combine(Utilities.AssemblyDirectory + @"\Plugins\BrodiesPlugin\Settings\Main-Settings.xml");
        bool isBotRunning;
        bool BeenInitialized;

        private static LocalPlayer Me { get { return StyxWoW.Me; } }

        public BrodiesPluginUI()
        {
            InitializeComponent();
        }

        private void BrodiesPluginUI_Load(object sender, EventArgs e)
        {
			UpdateStuff(); // Load Saved Settings

            BPGlobalSettings.Instance.Save();

            // Init the Spell Avoidance and Item Usage Selections
            // Items
            checkBox14.Checked = SASettings.Instance.CrystalOfInsanity;
            checkBox94.Checked = SASettings.Instance.WhisperingCrystal;
            checkBox18.Checked = SASettings.Instance.DewMorning;
            checkBox19.Checked = SASettings.Instance.SingingCrystal;
            checkBox20.Checked = SASettings.Instance.BookAges;
            checkBox22.Checked = SASettings.Instance.Windfeather;
            checkBox34.Checked = SASettings.Instance.MistyPijiu;
            checkBox35.Checked = SASettings.Instance.BubblingPijiu;
            checkBox36.Checked = SASettings.Instance.ThickPijiu;
            checkBox66.Checked = SASettings.Instance.CrescentSaberfish;
            checkBox93.Checked = SASettings.Instance.BlackwaterWhiptail;
            checkBox67.Checked = SASettings.Instance.SeaScorpion;
            checkBox65.Checked = SASettings.Instance.FireAmmonite;
            checkBox69.Checked = SASettings.Instance.FatSleeper;
            checkBox68.Checked = SASettings.Instance.JawlessSkulker;
            checkBox70.Checked = SASettings.Instance.AbyssalGulperEel;
            checkBox71.Checked = SASettings.Instance.BlindLakeSturgeon;
            checkBox101.Checked = SASettings.Instance.AutoUseLures;
            // Spells
            // Pandaria Proper
            checkBox23.Checked = SASettings.Instance.LightningPool;
            checkBox24.Checked = SASettings.Instance.CausticPitch;
            checkBox25.Checked = SASettings.Instance.VenomSplash;
            checkBox16.Checked = SASettings.Instance.HotFoot;
            checkBox17.Checked = SASettings.Instance.IgniteFuel;
            checkBox21.Checked = SASettings.Instance.SolarBeam;
            checkBox15.Checked = SASettings.Instance.BootToTheHead;
            checkBox26.Checked = SASettings.Instance.ShadowFissure;
            checkBox27.Checked = SASettings.Instance.DevastatingArc;
            checkBox28.Checked = SASettings.Instance.ReavingClaws;
            checkBox29.Checked = SASettings.Instance.LightningCrash;
            checkBox30.Checked = SASettings.Instance.DreadSlash;
            checkBox31.Checked = SASettings.Instance.ThunderCrush;
            checkBox32.Checked = SASettings.Instance.VengefulSpirit;
            checkBox33.Checked = SASettings.Instance.DoubleSweep;
            // Isle of Thunder
            checkBox42.Checked = SASettings.Instance.LightningCrack;
            checkBox40.Checked = SASettings.Instance.WaveOfMight;
            checkBox38.Checked = SASettings.Instance.BallLightning;
            checkBox37.Checked = SASettings.Instance.RingOfThunder;
            checkBox39.Checked = SASettings.Instance.ColumnOfThunder;
            checkBox44.Checked = SASettings.Instance.EnergizedMetal;
            checkBox43.Checked = SASettings.Instance.WhirlingAttack;
            checkBox45.Checked = SASettings.Instance.RiversOfBlood;
            checkBox46.Checked = SASettings.Instance.VileSpit;
            checkBox41.Checked = SASettings.Instance.AcidicRegurgitation;
            checkBox47.Checked = SASettings.Instance.FetidQuake;
            // Timeless Isle
            checkBox52.Checked = SASettings.Instance.RendingSwipe;
            checkBox51.Checked = SASettings.Instance.GreaterSwipe;
            checkBox50.Checked = SASettings.Instance.Geyser;
            checkBox49.Checked = SASettings.Instance.ShellSpin;
            checkBox53.Checked = SASettings.Instance.GustOfWind;
            checkBox54.Checked = SASettings.Instance.Headbutt;
            checkBox48.Checked = SASettings.Instance.OxCharge;
            checkBox56.Checked = SASettings.Instance.Stomp;
            checkBox55.Checked = SASettings.Instance.SpinningCraneKick;
            checkBox57.Checked = SASettings.Instance.ClawFlurry;
            checkBox59.Checked = SASettings.Instance.BreathOfFire;
            checkBox58.Checked = SASettings.Instance.CracklingBlow;
            checkBox60.Checked = SASettings.Instance.BlazingBlow;
            checkBox61.Checked = SASettings.Instance.BurningSacrifice;
            checkBox62.Checked = SASettings.Instance.BlazingCleave;
            checkBox63.Checked = SASettings.Instance.DefensiveShield;
			
			// Init the Dailies checkBoxes
			checkBox1.Checked = BPSettings.Instance.Active1;
            RecolorBoxes(checkBox1);
			checkBox2.Checked = BPSettings.Instance.Active2;
            RecolorBoxes(checkBox2);
			checkBox3.Checked = BPSettings.Instance.Active3;
            RecolorBoxes(checkBox3);
			checkBox4.Checked = BPSettings.Instance.Active4;
            RecolorBoxes(checkBox4);
			checkBox5.Checked = BPSettings.Instance.Active5;
            RecolorBoxes(checkBox5);
			checkBox6.Checked = BPSettings.Instance.Active6;
            RecolorBoxes(checkBox6);
			checkBox7.Checked = BPSettings.Instance.Active7;
            RecolorBoxes(checkBox7);
			checkBox8.Checked = BPSettings.Instance.Active8;
            RecolorBoxes(checkBox8);
			checkBox9.Checked = BPSettings.Instance.Active9;
            RecolorBoxes(checkBox9);
			checkBox10.Checked = BPSettings.Instance.Active10;
            RecolorBoxes(checkBox10);
			checkBox11.Checked = BPSettings.Instance.Active11;
            RecolorBoxes(checkBox11);
			checkBox12.Checked = BPSettings.Instance.Active12;
            RecolorBoxes(checkBox12);
            checkBox13.Checked = BPSettings.Instance.Active13;
            RecolorBoxes(checkBox13);
			checkBox1.Enabled = false;
			checkBox2.Enabled = false;
			checkBox3.Enabled = false;
			checkBox4.Enabled = false;
			checkBox5.Enabled = false;
			checkBox6.Enabled = false;
			checkBox7.Enabled = false;
			checkBox8.Enabled = false;
			checkBox9.Enabled = false;
			checkBox10.Enabled = false;
			checkBox11.Enabled = false;
            checkBox12.Enabled = false;

            if (checkBox13.Checked == true)
            {
                checkBox1.Enabled = true;
				checkBox2.Enabled = true;
				checkBox3.Enabled = true;
				checkBox4.Enabled = true;
				checkBox5.Enabled = true;
				checkBox6.Enabled = true;
				checkBox7.Enabled = true;
				checkBox8.Enabled = true;
				checkBox9.Enabled = true;
				checkBox10.Enabled = true;
				checkBox11.Enabled = true;
                //checkBox12.Enabled = true;
                checkBox13.BackColor = System.Drawing.Color.Blue;
            }
            else
                checkBox13.BackColor = System.Drawing.Color.Red;
			
			// Check for Alliance Shieldwall - Disable Dominance
			if (Me.IsAlliance)
			{
				textBox5.Text = Convert.ToString(Me.GetReputationLevelWith(1376)); // Operation: Shieldwall
                textBox8.Text = Convert.ToString(Me.GetReputationLevelWith(1387)); // Kirin Tor Offensive
				textBox9.Text = Convert.ToString(Me.GetReputationLevelWith(1387)); // Kirin Tor Offensive
			}
			// Check for Horde Dominance - Disable Shieldwall
			if (Me.IsHorde)
			{
				textBox5.Text = Convert.ToString(Me.GetReputationLevelWith(1375)); // Dominance Offensive
				textBox8.Text = Convert.ToString(Me.GetReputationLevelWith(1388)); // Sunreaver Onslaught
                textBox9.Text = Convert.ToString(Me.GetReputationLevelWith(1388)); // Sunreaver Onslaught
			}

			// Let's check Faction reps... why not make things easier? We are checking above for Ally / Horde only.
			textBox1.Text = Convert.ToString(Me.GetReputationLevelWith(1269)); // Golden Lotus
			textBox2.Text = Convert.ToString(Me.GetReputationLevelWith(1272)); // The Tillers
			textBox3.Text = Convert.ToString(Me.GetReputationLevelWith(1271)); // Cloud Serpent
			textBox4.Text = Convert.ToString(Me.GetReputationLevelWith(1302)); // The Anglers
			textBox6.Text = Convert.ToString(Me.GetReputationLevelWith(1337)); // The Klaxxi
			textBox7.Text = Convert.ToString(Me.GetReputationLevelWith(1270)); // Shado Pan
			textBox10.Text = Convert.ToString(Me.GetReputationLevelWith(1341)); // August Celestials
			textBox11.Text = Convert.ToString(Me.GetReputationLevelWith(1358)); // Nat Pagle
			textBox12.Text = Convert.ToString(Me.GetReputationLevelWith(1492)); // Emperor Shaohao

            // Tabard Page Reps
            if (Me.IsAlliance)
            {
                // Classic
                Tabards.SetUpTabardScreen("Darnassus", 69, BMobList.DarnassusTabard, 45579, textBox13, label42, pictureBox32);
                Tabards.SetUpTabardScreen("Exodar", 930, BMobList.ExodarTabard, 45580, textBox14, label43, pictureBox33);
                Tabards.SetUpTabardScreen("Gilneas", 1134, BMobList.GilneasTabard, 64882, textBox15, label44, pictureBox34);
                Tabards.SetUpTabardScreen("Gnomeregan", 54, BMobList.GnomereganTabard, 45578, textBox16, label45, pictureBox35);
                Tabards.SetUpTabardScreen("Ironforge", 47, BMobList.ExodarTabard, 45577, textBox17, label46, pictureBox36);
                Tabards.SetUpTabardScreen("Stormwind", 72, BMobList.ExodarTabard, 45574, textBox18, label47, pictureBox37);
                Tabards.SetUpTabardScreen("Tushui", 1353, BMobList.ExodarTabard, 83079, textBox19, label48, pictureBox38);
                // Cataclysm
                Tabards.SetUpTabardScreen("Wildhammer", 1174, BMobList.WildhammerTabard, 65908, textBox24, label53, pictureBox43);
            }
            if (Me.IsHorde)
            {
                // Classic
                Tabards.SetUpTabardScreen("Bilgewater", 1133, BMobList.BilgewaterTabard, 64484, textBox13, label42, pictureBox32);
                Tabards.SetUpTabardScreen("Darkspear", 530, BMobList.DarkspearTabard, 45582, textBox14, label43, pictureBox33);
                Tabards.SetUpTabardScreen("Huojin", 1352, BMobList.HuojinTabard, 83080, textBox15, label44, pictureBox34);
                Tabards.SetUpTabardScreen("Orgrimmar", 76, BMobList.OrgrimmarTabard, 45581, textBox16, label45, pictureBox35);
                Tabards.SetUpTabardScreen("Silvermoon", 911, BMobList.SilvermoonTabard, 45585, textBox17, label46, pictureBox36);
                Tabards.SetUpTabardScreen("Thunder Bluff", 81, BMobList.ThunderBluffTabard, 45584, textBox18, label47, pictureBox37);
                Tabards.SetUpTabardScreen("Undercity", 68, BMobList.UndercityTabard, 45583, textBox19, label48, pictureBox38);
                // Cataclysm
                Tabards.SetUpTabardScreen("Dragonmaw", 1172, BMobList.DragonmawTabard, 65909, textBox24, label53, pictureBox43);
            }
            // Neutral
            Tabards.SetUpTabardScreen("Argent Crusade", 1106, BMobList.ArgentCrusadeTabard, 43154, textBox28, label62, pictureBox52);
            Tabards.SetUpTabardScreen("Kirin Tor", 1090, BMobList.KirinTorTabard, 43157, textBox27, label61, pictureBox51);
            Tabards.SetUpTabardScreen("Ebon Blade", 1098, BMobList.EbonBladeTabard, 43155, textBox26, label60, pictureBox50);
            Tabards.SetUpTabardScreen("Wyrmrest Accord", 1091, BMobList.WyrmrestTabard, 43156, textBox25, label59, pictureBox49);
            Tabards.SetUpTabardScreen("Hyjal", 1158, BMobList.HyjalTabard, 65906, textBox23, label52, pictureBox42);
            Tabards.SetUpTabardScreen("Ramkahen", 1173, BMobList.RamkahenTabard, 65904, textBox22, label51, pictureBox41);
            Tabards.SetUpTabardScreen("Earthen Ring", 1135, BMobList.EarthenTabard, 65905, textBox21, label50, pictureBox40);
            Tabards.SetUpTabardScreen("Therazane", 1171, BMobList.TherazaneTabard, 65907, textBox20, label49, pictureBox39);
            checkBox64.Checked = BPGlobalSettings.Instance.TabardAutoEquip;

            // Questing Screen Setup
            pictureBox21.Parent = pictureBox13;
            if (Me.Level >= 90)
                pictureBox21.Location = new System.Drawing.Point(282, 50);
            else if (Me.Level >= 80)
                pictureBox21.Location = new System.Drawing.Point(255, 50);
            else if (Me.Level >= 70)
                pictureBox21.Location = new System.Drawing.Point(228, 50);
            else if (Me.Level >= 60)
                pictureBox21.Location = new System.Drawing.Point(201, 50);
            else if (Me.Level >= 50)
                pictureBox21.Location = new System.Drawing.Point(174, 50);
            else if (Me.Level >= 40)
                pictureBox21.Location = new System.Drawing.Point(147, 50);
            else if (Me.Level >= 30)
                pictureBox21.Location = new System.Drawing.Point(120, 50);
            else if (Me.Level >= 20)
                pictureBox21.Location = new System.Drawing.Point(96, 50);
            else if (Me.Level >= 10)
                pictureBox21.Location = new System.Drawing.Point(67, 50);
            else
                pictureBox21.Location = new System.Drawing.Point(38, 50);
            pictureBox21.BackColor = System.Drawing.Color.Transparent;

            // Classic Reps Setup

            if (Me.IsAlliance)
            {
                #region Text box setup

                this.label34.Location = new System.Drawing.Point(64, 20);
                this.label34.Size = new System.Drawing.Size(85, 21);
                this.label34.Text = "Darnassus";
                this.label34.TextAlign = System.Drawing.ContentAlignment.TopCenter;

                this.label35.Location = new System.Drawing.Point(64, 82);
                this.label35.Size = new System.Drawing.Size(61, 21);
                this.label35.Text = "Exodar";
                this.label35.TextAlign = System.Drawing.ContentAlignment.TopCenter;

                this.label36.Location = new System.Drawing.Point(64, 145);
                this.label36.Size = new System.Drawing.Size(64, 21);
                this.label36.Text = "Gilneas";
                this.label36.TextAlign = System.Drawing.ContentAlignment.TopCenter;

                this.label37.Location = new System.Drawing.Point(64, 210);
                this.label37.Size = new System.Drawing.Size(99, 21);
                this.label37.Text = "Gnomeregan";

                this.label38.Location = new System.Drawing.Point(246, 20);
                this.label38.Size = new System.Drawing.Size(75, 21);
                this.label38.Text = "Ironforge";

                this.label39.Location = new System.Drawing.Point(246, 82);
                this.label39.Size = new System.Drawing.Size(89, 21);
                this.label39.Text = "Stormwind";

                this.label40.Location = new System.Drawing.Point(246, 145);
                this.label40.Size = new System.Drawing.Size(130, 21);
                this.label40.Text = "Tushui Pandaren";

                #endregion
            }
            if (Me.IsHorde)
            {
                #region Text box setup

                this.label34.Location = new System.Drawing.Point(64, 11);
                this.label34.Size = new System.Drawing.Size(87, 42);
                this.label34.Text = "Bilgewater\nCartel";
                this.label34.TextAlign = System.Drawing.ContentAlignment.TopCenter;

                this.label35.Location = new System.Drawing.Point(64, 74);
                this.label35.Size = new System.Drawing.Size(84, 42);
                this.label35.Text = "Darkspear\nTrolls";
                this.label35.TextAlign = System.Drawing.ContentAlignment.TopCenter;

                this.label36.Location = new System.Drawing.Point(64, 137);
                this.label36.Size = new System.Drawing.Size(78, 42);
                this.label36.Text = "Huojin\nPandaren";
                this.label36.TextAlign = System.Drawing.ContentAlignment.TopCenter;

                this.label37.Location = new System.Drawing.Point(64, 210);
                this.label37.Size = new System.Drawing.Size(89, 21);
                this.label37.Text = "Orgrimmar";

                this.label38.Location = new System.Drawing.Point(246, 20);
                this.label38.Size = new System.Drawing.Size(91, 21);
                this.label38.Text = "Silvermoon";

                this.label39.Location = new System.Drawing.Point(246, 82);
                this.label39.Size = new System.Drawing.Size(108, 21);
                this.label39.Text = "Thunder Bluff";

                this.label40.Location = new System.Drawing.Point(246, 145);
                this.label40.Size = new System.Drawing.Size(80, 21);
                this.label40.Text = "Undercity";

                #endregion
            }

            if (Me.IsAlliance)
            {
                // Cataclysm Rep Setup
                label58.Text = "Wildhammer";

                // Pandaria Reps Setup
                this.button72.Text = "Honor Hold";
                this.button73.Text = "Kurenai";
                this.button61.Text = "Stormwind";
                this.button62.Text = "Ironforge";
                this.button63.Text = "Darnassus";
                this.button64.Text = "Stormwind";
                this.button65.Text = "Ironforge";
                this.button66.Text = "Darnassus";

                // Draenor Reps Setup
                this.button136.Text = "Council of Exarchs";
                this.button133.Text = "Wrynn's Vanguard";
            }
            if (Me.IsHorde)
            {
                // Cataclysm Rep Setup
                label58.Text = "Dragonmaw";

                // Pandaria Reps Setup
                this.button72.Text = "Thrallmar";
                this.button73.Text = "Mag'har";
                this.button61.Text = "Orgrimmar";
                this.button62.Text = "Thunder Bluff";
                this.button63.Text = "Undercity";
                this.button64.Text = "Orgrimmar";
                this.button65.Text = "Thunder Bluff";
                this.button66.Text = "Undercity";

                // Draenor Reps Setup
                this.button136.Text = "Frostwolf Orcs";
                this.button133.Text = "Vol'jin's Spear";
            }

            // Children's Week Setup
            richTextBox9.Text = "Please click one of the buttons shown to start the quest line for that areas Childrens Week quests. Please note that once an area becomes unavailable to you, or you complete it, you will no longer be able to click on it.";
            if (Me.IsAlliance)
            {
                if (IsQuestComplete(171)) // Final quest of Stormwind Kid's Week Line
                {
                    this.button20.Enabled = false;
                    this.button20.Text = "Stormwind Complete"; // Children's Week Home Button
                }
                else
                {
                    this.button20.Enabled = true;
                    this.button20.Text = "Stormwind"; // Children's Week Home Button
                }
                if (IsQuestComplete(10966)) // Final quest of Outlands Kid's Week Line
                {
                    this.button21.Enabled = false;
                    this.button21.Text = "Shattrath Complete"; // Children's Week Home Button
                }
                else
                    this.button21.Enabled = true;
            }
            if (Me.IsHorde)
            {
                if (IsQuestComplete(5502)) // Final quest of Orgrimmar Kid's Week Line
                {
                    this.button20.Enabled = false;
                    this.button20.Text = "Orgrimmar Complete"; // Children's Week Home Button
                }
                else
                {
                    this.button20.Enabled = true;
                    this.button20.Text = "Orgrimmar"; // Children's Week Home Button
                }
                if (IsQuestComplete(10967)) // Final quest of Outlands Kid's Week Line
                {
                    this.button21.Enabled = false;
                    this.button21.Text = "Shattrath Complete"; // Children's Week Home Button
                }
                else
                    this.button21.Enabled = true;
            }
            if (IsQuestComplete(13926) || IsQuestComplete(13960)) // First of Oracles, Final quest of Northrend Wolvar Line
                this.button23.Enabled = false;
            else
                this.button23.Enabled = true;
            if (IsQuestComplete(13927) || IsQuestComplete(13959)) // First of Wolvar, Final quest of Northrend Oracle Line
                this.button24.Enabled = false;
            else
                this.button24.Enabled = true;

            // Professions Tab Setup
            if (BrodiesPlugin.CheckPremium())
                button124.Visible = false; // Cooking Purchase
            else
                button124.Visible = true; // Cooking Purchase
            
            textBox29.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Fishing).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Fishing).MaxValue);
            textBox30.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Cooking).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Cooking).MaxValue);
            textBox31.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Herbalism).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Herbalism).MaxValue);
            textBox32.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Mining).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Mining).MaxValue);
            textBox33.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Skinning).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Skinning).MaxValue);
            textBox34.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Blacksmithing).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Blacksmithing).MaxValue);
            textBox35.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Leatherworking).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Leatherworking).MaxValue);
            textBox36.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Tailoring).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Tailoring).MaxValue);
            textBox37.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Inscription).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Inscription).MaxValue);
            textBox38.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Enchanting).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Enchanting).MaxValue);
            textBox39.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Alchemy).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Alchemy).MaxValue);
            textBox40.Text = "" + Convert.ToString(Me.GetSkill(SkillLine.Engineering).CurrentValue) + " / " + Convert.ToString(Me.GetSkill(SkillLine.Engineering).MaxValue);

            BeenInitialized = BrodiesPlugin.hasBeenInitialized2;
        }

        public void UpdateStuff()
        {
            SASettings.Instance.Load();
            BPSettings.Instance.Load();
            BPGlobalSettings.Instance.Load();
            if (BeenInitialized == false)
            {
                BPGlobalSettings.Instance.Save();
            }
		}

        public bool IsQuestComplete(uint id)
        {
            PlayerQuest quest = Me.QuestLog.GetQuestById(id);
            if (quest != null)
            {
                return quest.IsCompleted;
            }

            return Me.QuestLog.GetCompletedQuests().Contains(id);
        }

        #region Settings and Color Boxes

        public class SASettings : Settings
        {
            public static readonly SASettings Instance = new SASettings();
            public SASettings()
                : base(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format(@"Plugins\BrodiesPlugin\Settings\SA-Settings-{0}-{1}.xml", Me.RealmName, Me.Name)))
            {
            }

            // Item Toggles
            [Setting, DefaultValue(false)]
            public bool CrystalOfInsanity { get; set; }
            [Setting, DefaultValue(false)]
            public bool WhisperingCrystal { get; set; }
            [Setting, DefaultValue(false)]
            public bool SingingCrystal { get; set; }
            [Setting, DefaultValue(false)]
            public bool DewMorning { get; set; }
            [Setting, DefaultValue(false)]
            public bool BookAges { get; set; }
            [Setting, DefaultValue(false)]
            public bool Windfeather { get; set; }
            [Setting, DefaultValue(false)]
            public bool BubblingPijiu { get; set; }
            [Setting, DefaultValue(false)]
            public bool ThickPijiu { get; set; }
            [Setting, DefaultValue(false)]
            public bool MistyPijiu { get; set; }
            [Setting, DefaultValue(false)]
            public bool CrescentSaberfish { get; set; }
            [Setting, DefaultValue(false)]
            public bool BlackwaterWhiptail { get; set; }
            [Setting, DefaultValue(false)]
            public bool SeaScorpion { get; set; }
            [Setting, DefaultValue(false)]
            public bool FireAmmonite { get; set; }
            [Setting, DefaultValue(false)]
            public bool JawlessSkulker { get; set; }
            [Setting, DefaultValue(false)]
            public bool FatSleeper { get; set; }
            [Setting, DefaultValue(false)]
            public bool AbyssalGulperEel { get; set; }
            [Setting, DefaultValue(false)]
            public bool BlindLakeSturgeon { get; set; }
            [Setting, DefaultValue(false)]
            public bool AutoUseLures { get; set; }

            // Spell Avoidances
            [Setting, DefaultValue(false)]
            public bool LightningPool { get; set; }
            [Setting, DefaultValue(false)]
            public bool CausticPitch { get; set; }
            [Setting, DefaultValue(false)]
            public bool VenomSplash { get; set; }
            [Setting, DefaultValue(false)]
            public bool HotFoot { get; set; }
            [Setting, DefaultValue(false)]
            public bool IgniteFuel { get; set; }
            [Setting, DefaultValue(false)]
            public bool SolarBeam { get; set; }
            [Setting, DefaultValue(false)]
            public bool BootToTheHead { get; set; }
            [Setting, DefaultValue(false)]
            public bool ShadowFissure { get; set; }
            [Setting, DefaultValue(false)]
            public bool DevastatingArc { get; set; }
            [Setting, DefaultValue(false)]
            public bool ReavingClaws { get; set; }
            [Setting, DefaultValue(false)]
            public bool LightningCrash { get; set; }
            [Setting, DefaultValue(false)]
            public bool DreadSlash { get; set; }
            [Setting, DefaultValue(false)]
            public bool ThunderCrush { get; set; }
            [Setting, DefaultValue(false)]
            public bool VengefulSpirit { get; set; }
            [Setting, DefaultValue(false)]
            public bool DoubleSweep { get; set; }
            [Setting, DefaultValue(false)]
            public bool LightningCrack { get; set; }
            [Setting, DefaultValue(false)]
            public bool WaveOfMight { get; set; }
            [Setting, DefaultValue(false)]
            public bool BallLightning { get; set; }
            [Setting, DefaultValue(false)]
            public bool RingOfThunder { get; set; }
            [Setting, DefaultValue(false)]
            public bool ColumnOfThunder { get; set; }
            [Setting, DefaultValue(false)]
            public bool EnergizedMetal { get; set; }
            [Setting, DefaultValue(false)]
            public bool WhirlingAttack { get; set; }
            [Setting, DefaultValue(false)]
            public bool RiversOfBlood { get; set; }
            [Setting, DefaultValue(false)]
            public bool VileSpit { get; set; }
            [Setting, DefaultValue(false)]
            public bool AcidicRegurgitation { get; set; }
            [Setting, DefaultValue(false)]
            public bool FetidQuake { get; set; }
            [Setting, DefaultValue(false)]
            public bool BlazingBlow { get; set; }
            [Setting, DefaultValue(false)]
            public bool BlazingCleave { get; set; }
            [Setting, DefaultValue(false)]
            public bool BreathOfFire { get; set; }
            [Setting, DefaultValue(false)]
            public bool BurningSacrifice { get; set; }
            [Setting, DefaultValue(false)]
            public bool ClawFlurry { get; set; }
            [Setting, DefaultValue(false)]
            public bool CracklingBlow { get; set; }
            [Setting, DefaultValue(false)]
            public bool DefensiveShield { get; set; }
            [Setting, DefaultValue(false)]
            public bool Geyser { get; set; }
            [Setting, DefaultValue(false)]
            public bool GreaterSwipe { get; set; }
            [Setting, DefaultValue(false)]
            public bool GustOfWind { get; set; }
            [Setting, DefaultValue(false)]
            public bool Headbutt { get; set; }
            [Setting, DefaultValue(false)]
            public bool OxCharge { get; set; }
            [Setting, DefaultValue(false)]
            public bool RendingSwipe { get; set; }
            [Setting, DefaultValue(false)]
            public bool ShellSpin { get; set; }
            [Setting, DefaultValue(false)]
            public bool SpinningCraneKick { get; set; }
            [Setting, DefaultValue(false)]
            public bool Stomp { get; set; }
        }

        public class BPSettings : Settings
        {
            public static readonly BPSettings Instance = new BPSettings();
            public BPSettings()
                : base(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format(@"Plugins\BrodiesPlugin\Settings\Char-Settings-{0}-{1}.xml", Me.RealmName, Me.Name)))
            {
            }
			[Setting, DefaultValue(false)]
            public bool Active1 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active2 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active3 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active4 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active5 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active6 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active7 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active8 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active9 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active10 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active11 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active12 { get; set; }
			[Setting, DefaultValue(false)]
            public bool Active13 { get; set; }
        }

        public class BPGlobalSettings : Settings
        {
            public static readonly BPGlobalSettings Instance = new BPGlobalSettings();
            public BPGlobalSettings()
                : base(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, string.Format(@"Plugins\BrodiesPlugin\Settings\Main-Settings.xml")))
            {
            }
            [Setting, DefaultValue(0)]
            public int QBVersion { get; set; }
            [Setting, DefaultValue(false)]
            public bool TabardAutoEquip { get; set; }
        }

        public void RecolorBoxes(CheckBox CB)
        {
            if (CB.Checked)
                CB.BackColor = System.Drawing.Color.Blue;
            else
                CB.BackColor = System.Drawing.Color.Red;
        }

        #endregion

        #region Enable Dailies and Start Dailies Buttons

        private void checkBox13_CheckedChanged_1(object sender, EventArgs e) // Enable Dailies
        {
            if (checkBox13.Checked == false) // If Dailies are off
            {
                checkBox1.Enabled = false;
                checkBox2.Enabled = false;
                checkBox3.Enabled = false;
                checkBox4.Enabled = false;
                checkBox5.Enabled = false;
                checkBox6.Enabled = false;
                checkBox7.Enabled = false;
                checkBox8.Enabled = false;
                checkBox9.Enabled = false;
                checkBox10.Enabled = false;
                checkBox11.Enabled = false;
                checkBox12.Enabled = false;
            }
            else
            {
                checkBox1.Enabled = true;
                checkBox2.Enabled = true;
                checkBox3.Enabled = true;
                checkBox4.Enabled = true;
                checkBox5.Enabled = true;
                checkBox6.Enabled = true;
                checkBox7.Enabled = true;
                checkBox8.Enabled = true;
                checkBox9.Enabled = true;
                checkBox10.Enabled = true;
                checkBox11.Enabled = true;
                //checkBox12.Enabled = true; DISABLED
            }
            RecolorBoxes(checkBox13);
        }

        #region Color Dailies Boxes

        private void checkBox1_CheckedChanged_1(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox1);
        }

        private void checkBox2_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox2);
        }

        private void checkBox3_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox3);
        }

        private void checkBox4_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox4);
        }

        private void checkBox5_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox5);
        }

        private void checkBox6_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox6);
        }

        private void checkBox7_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox7);
        }

        private void checkBox8_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox8);
        }

        private void checkBox9_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox9);
        }

        private void checkBox10_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox10);
        }

        private void checkBox11_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox11);
        }

        private void checkBox12_CheckedChanged(object sender, EventArgs e)
        {
            RecolorBoxes(checkBox12);
        }

        #endregion

        private void button4_Click(object sender, EventArgs e) // Start Dailies
        {
            bool canCastHearth = false;

            if (!checkBox13.Checked)
            {
                var dialogResult = MessageBox.Show
                    ("The ENABLE DAILIES button on this screen was not checked. Please enable first, select your reps you want to do, then click Start Dailies.", "ENABLE DAILIES error!",
                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            else
            {
                if (BMobList.Hearthstone != null)
                {
                    if (BMobList.Hearthstone.Cooldown <= 0)
                        canCastHearth = true;
                }
                else if (BMobList.InnkeepersDaughter != null)
                {
                    if (BMobList.InnkeepersDaughter.Cooldown <= 0)
                        canCastHearth = true;
                }
                else if (BMobList.EtherealPortal != null)
                {
                    if (BMobList.EtherealPortal.Cooldown <= 0)
                        canCastHearth = true;
                }
                else if (BMobList.DarkPortalHS != null)
                {
                    if (BMobList.DarkPortalHS.Cooldown <= 0)
                        canCastHearth = true;
                }
                else if (BMobList.TDFabricator != null)
                {
                    if (BMobList.TDFabricator.Cooldown <= 0)
                        canCastHearth = true;
                }
                else
                {
                    var dialogResult = MessageBox.Show
                        ("Your Hearthstone item is missing from your inventory.\n\nPlease confirm you have it before continuing.", "Hearthstone missing error!",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }

                if (canCastHearth == false)
                {
                    var dialogResult = MessageBox.Show
                        ("Your Hearthstone item is currently on cooldown.\n\nPlease confirm it isn't before continuing.", "Hearthstone cooldown error!",
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    BPGlobalSettings.Instance.Save();
                    SaveProfileChoice();
                    BPSettings.Instance.Save();
                    SASettings.Instance.Save();
                    ProfileSelector(9); // Dailies Run
                }
            }
        }
        
        #endregion

        #region Profile Swapper Choices and Execution

        public void SaveProfileChoice()
		{
			BPSettings.Instance.Active1 = checkBox1.Checked;
			BPSettings.Instance.Active2 = checkBox2.Checked;
			BPSettings.Instance.Active3 = checkBox3.Checked;
			BPSettings.Instance.Active4 = checkBox4.Checked;
			BPSettings.Instance.Active5 = checkBox5.Checked;
			BPSettings.Instance.Active6 = checkBox6.Checked;
			BPSettings.Instance.Active7 = checkBox7.Checked;
			BPSettings.Instance.Active8 = checkBox8.Checked;
			BPSettings.Instance.Active9 = checkBox9.Checked;
			BPSettings.Instance.Active10 = checkBox10.Checked;
			BPSettings.Instance.Active11 = checkBox11.Checked;
			BPSettings.Instance.Active12 = checkBox12.Checked;
			BPSettings.Instance.Active13 = checkBox13.Checked;
		}

        private void ProfileSelector(int lastUseProfile)
        {
            switch (lastUseProfile)
            {
                case 0:
                    return;
                // Questing Profile
                case 1:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__The_Level_Grind__Brodie_);
                    break;
                // Achievement Profiles
                case 2:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Ach__Lost_and_Found__Brodie_);
                    break;
                case 3:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Ach__Lorewalkers__Brodie_);
                    break;
                // World Explorer
                case 3001:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.WE_Eastern_Kingdoms);
                    break;
                case 3003:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.WE_Outlands);
                    break;
                // MoP Dailies Profile
                case 9:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Daily_Grind__Brodie_);
                    break;
                // Rep Grind Profiles
                // Classic Cooking Profiles
                case 1011:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Stormwind_Cooking__Brodie_);
                    break;
                case 1012:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Ironforge_Cooking__Brodie_);
                    break;
                case 1013:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Darnassus_Cooking__Brodie_);
                    break;
                case 1014:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Orgrimmar_Cooking__Brodie_);
                    break;
                case 1015:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Thunder_Bluff_Cooking__Brodie_);
                    break;
                case 1016:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Undercity_Cooking__Brodie_);
                    break;
                // Classic Fishing Profiles
                case 1081:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Stormwind_Fishing__Brodie_);
                    break;
                case 1082:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Ironforge_Fishing__Brodie_);
                    break;
                case 1083:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Darnassus_Fishing__Brodie_);
                    break;
                case 1084:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Orgrimmar_Fishing__Brodie_);
                    break;
                case 1085:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Thunder_Bluff_Fishing__Brodie_);
                    break;
                case 1086:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Undercity_Fishing__Brodie_);
                    break;
                // Classic Rep Profiles
                case 102:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Darkmoon_Faire__Brodie_);
                    break;
                case 103:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Cenarion_Circle__Brodie_);
                    break;
                case 104:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Steamwheedle_Cartel__Brodie_);
                    break;
                case 105:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Hydraxian_Waterlords__Brodie_);
                    break;
                case 106:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Timbermaw_Hold__Brodie_);
                    break;
                case 107:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Brood_Of_Nozdormu__Brodie_);
                    break;
                case 2001:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Darnassus_Tabard__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Bilgewater_Tabard__Brodie_);
                    break;
                case 2002:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Exodar_Tabard__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Darkspear_Tabard__Brodie_);
                    break;
                case 2003:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Gilneas_Tabard__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Huojin_Tabard__Brodie_);
                    break;
                case 2004:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Gnomeregan_Tabard__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Orgrimmar_Tabard__Brodie_);
                    break;
                case 2005:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Ironforge_Tabard__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Silvermoon_Tabard__Brodie_);
                    break;
                case 2006:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Stormwind_Tabard__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Thunder_Bluff_Tabard__Brodie_);
                    break;
                case 2007:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Tushui_Tabard__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Undercity_Tabard__Brodie_);
                    break;
                case 2008:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Grab_All_Tabards_A__Brodie_);
                    else
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__Grab_All_Tabards_H__Brodie_);
                    break;
                // Outlands Rep Profiles
                case 110:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Ogrila__Brodie_);
                    break;
                case 111:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Netherwind__Brodie_);
                    break;
                case 112:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__TBC_Cooking__Brodie_);
                    break;
                case 113:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__TBC_Fishing__Brodie_);
                    break;
                case 114:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Cenarion_Expedition__Brodie_);
                    break;
                case 115:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Hellfire__Brodie_);
                    break;
                case 116:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Keepers_Of_Time__Brodie_);
                    break;
                case 117:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Nagrand__Brodie_);
                    break;
                case 118:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Sporeggar__Brodie_);
                    break;
                case 119:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Consortium__Brodie_);
                    break;
                case 120:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Lower_City__Brodie_);
                    break;
                case 121:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Shatari_Skyguard__Brodie_);
                    break;
                case 122:
                    //lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Shattered_Sun__Brodie_);
                    break;
                case 123:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Aldor__Brodie_);
                    break;
                case 124:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Scryers__Brodie_);
                    break;
                case 125:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Shatar__Brodie_);
                    break;
                // Pandaria Grind Profiles
                case 26:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__The_Black_Prince___ZuTual__Brodie_);
                    break;
                case 27:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Isle_of_Giants_Direhorns_Brodie_);
                    break;
                case 28:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Isle_of_Giants_Dinomancers__Brodie_);
                    break;
                case 29:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Timeless_Isle_Coin__Brodie_);
                    break;
                case 30:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Timeless_Isle_Spend__Brodie_);
                    break;
                case 31:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Rep__Shaohao_Rep_Farm__Brodie_);
                    break;
                case 32:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Grind__Crystal_of_Insanity__Brodie_);
                    break;
                // Halfhill Farm Grinds
                case 10:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Enigma_Seeds);
                    break;
                case 11:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Green_Cabbage_Seeds);
                    break;
                case 12:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Jade_Squash_Seeds);
                    break;
                case 13:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Juicyfruit_Carrot_Seeds);
                    break;
                case 14:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Magebulb_Seeds);
                    break;
                case 15:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Mogu_Pumpkin_Seeds);
                    break;
                case 16:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Pink_Turnip_Seeds);
                    break;
                case 17:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Raptorleaf_Seeds);
                    break;
                case 18:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Red_Blossom_Leeks_Seeds);
                    break;
                case 19:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Scallion_Seeds);
                    break;
                case 20:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Snakeroot_Seeds);
                    break;
                case 21:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Songbell_Seeds);
                    break;
                case 22:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Striped_Melon_Seeds);
                    break;
                case 23:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.White_Turnip_Seeds);
                    break;
                case 24:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Windshear_Cactus_Seeds);
                    break;
                case 25:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Witchberry_Seeds);
                    break;
                case 33:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Ironpaw_Grind);
                    break;
                // Holiday Profiles
                case 200:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Chocoholic__Brodie_);
                    break;
                case 201:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Noblegarden__Brodie_);
                    break;
                case 202:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kids___Alliance_Azeroth__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kids___Horde_Azeroth__Brodie_);
                    break;
                case 203:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kids___Alliance_Outlands__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kids___Horde_Outlands__Brodie_);
                    break;
                case 204:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kids___Wolvar__Brodie_);
                    break;
                case 205:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kids___Oracles__Brodie_);
                    break;
                case 206:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kalimdor_Warden_Extinguish_A__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Kalimdor_Keeper_Extinguish_H__Brodie_);
                    break;
                case 207:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__EK_Warden_Extinguish_A__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__EK_Keeper_Extinguish_H__Brodie_);
                    break;
                case 208:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Outlands_Warden_Extinguish_A__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Outlands_Keeper_Extinguish_H__Brodie_);
                    break;
                case 209:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Northrend_Warden_Extinguish_A__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Northrend_Keeper_Extinguish_H__Brodie_);
                    break;
                case 210:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Pandaria_Flames__Brodie_);
                    break;
                case 211:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Brewfest_A__Brodie_);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources._Hol__Brewfest_H__Brodie_);
                    break;
                case 212:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_EK___A);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_EK___H);
                    break;
                case 213:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_Kalimdor___A);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_Kalimdor___H);
                    break;
                case 214:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_Outlands___A);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_Outlands___H);
                    break;
                case 215:
                    if (Me.IsAlliance)
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_Northrend___A);
                    else
                        lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_Northrend___H);
                    break;
                case 216:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Tricks_and_Treats_of_Pandaria);
                    break;
                case 217:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources.Hallows_End_Achievements);
                    break;
                case 3000:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Prof__Cooking__Brodie_);
                    break;
                case 4000:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Grnd__Horde_Garrison_Full__Brodie_);
                    break;
                case 4001:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Grnd__Frostfire_Ridge__Brodie_);
                    break;
                case 4002:
                    lancaprofile(global::BrodiesPlugin.Properties.Resources._Grnd__Gorgrond__Brodie_);
                    break;
                // Default Break
                default:
                    return;
            }
        }

        private void lancaprofile(string ProfileToLoad)
        {
            bool isRunning = TreeRoot.IsRunning;
            if (isRunning)
            {
                BPGlobalSettings.Instance.Save();
                Close();
            }
            else
            {
                var questBot = BotManager.Instance.Bots.FirstOrDefault(kvp => kvp.Key == "Questing");
                if (questBot.Key == "Questing")
					BotManager.Instance.SetCurrent(questBot.Value);
				else
					Logging.Write("Unable to locate Questing bot");
			}
            BrodiesPlugin.LoadProfile(ProfileToLoad);
            Close();
			TreeRoot.Start();
        }

        private void SaveAndClose()
        {
            SaveProfileChoice();
            BPSettings.Instance.Save();
            BPGlobalSettings.Instance.Save();
            SASettings.Instance.Save();
            Close();
            isBotRunning = TreeRoot.IsRunning;
            if (isBotRunning) { TreeRoot.Stop(); }
        }

        #endregion

        #region Start and Close/Save Buttons

        private void StartProfileOnClick(string message, string title, int startCode, bool allowed)
        {
            if (allowed)
            {
                if (startCode == 1)
                {
                    BotEvents.Player.OnLevelUp += Player_OnLevelUp;
                    BotEvents.OnBotStopped += BotEvents_OnBotStopped;
                }

                var dialogResult = MessageBox.Show
                    (message, title,
                    MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);

                if (dialogResult == DialogResult.Yes)
                {
                    checkBox13.Checked = false;
                    BPGlobalSettings.Instance.Save();
                    SaveProfileChoice();
                    BPSettings.Instance.Save();
                    SASettings.Instance.Save();
                    ProfileSelector(startCode);
                }
            }
            else
            {
                var dialogResult = MessageBox.Show
                    ("Sorry, but this feature is limited to premium users only. Please purchase the full version of TBM Profile Compendium to unlock this feature. Thank you. If you think you are receiving this message in error, please report this issue to the HB forums. Thank you!", "Not Authorized To Use",
                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
        }

        private void Player_OnLevelUp(BotEvents.Player.LevelUpEventArgs args)
        {
            Logging.Write(Colors.Teal, "[Brodies Plugin] Level up detected, checking level to confirm if we need to change areas!");
            lancaprofile(global::BrodiesPlugin.Properties.Resources._Quest__The_Level_Grind__Brodie_);
        }

        private void BotEvents_OnBotStopped(EventArgs args)
        {
            BPSettings.Instance.Save();
            BotEvents.Player.OnLevelUp -= Player_OnLevelUp;
            BotEvents.OnBotStopped -= BotEvents_OnBotStopped;
        }

        private void SaveAndClose_Click(object sender, EventArgs e)
        {
            SaveAndClose();
        }

        #endregion

        #region Questing Page Starter

        private void button2_Click(object sender, EventArgs e) // Questing Page
        {
            string message = "You have selected the 1-90 Leveling Profile.\n\nThis will quest through level respective areas until max level is reached (supported or capable).  You can start it on which ever continent, it will move to wherever it needs to go.\n\nContinue?";
            string title = "1-90 Leveling Profile";
            int start = 1; // Leveling 1 - 90
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button125_Click(object sender, EventArgs e)
        {
            string message = "You have selected the WoD Pre-Launch Event.\n\nThis will run through the quests related to the Iron Invasion story line.  Please start this profile (if you have not begun the quest line) from your faction's capital (SW or Org), it will move to wherever it needs to go.\n\nContinue?";
            string title = "The Iron Invasion";
            int start = 10000; // Pre-Launch
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Links List (including Paypal buttons)

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("http://www.thebuddyforum.com/honorbuddy-forum/submitted-profiles/neutral/97995-rep-ach-thebrodiemans-profile-compendium.html");
        }

        private void linkLabel2_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("http://store.buddyauth.com/Product?productId=133");
        }

        private void linkLabel3_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("http://www.thebuddyforum.com/honorbuddy-forum/honorbuddy-profiles/152037-animus-thebrodieman-productions-loremaster-plugin.html");
        }

        private void linkLabel5_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("http://www.thebuddyforum.com/");
        }

        private void linkLabel6_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            System.Diagnostics.Process.Start("http://www.thebuddyforum.com/honorbuddy-forum/honorbuddy-guides/108771-help-desk.html");
        }

        private void pictureBox1_Click(object sender, EventArgs e) // Paypal
        {
            ProcessStartInfo sInfo = new ProcessStartInfo("https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=davidl_rt06%40yahoo%2ecom&lc=US&item_name=TheBrodieMan%27s%20Dinner%20Fund&currency_code=USD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted");
            Process.Start(sInfo);
        }

        private void button124_Click(object sender, EventArgs e)
        {
            var dialogResult = MessageBox.Show
                    ("This will direct you to the Cooking Profession Grinder's store page on HB Store.\n\nIf you already own the premium version of the Compendium, or plan to, then you do NOT need to purchase this, as it is included with the Premium Version of the Compendium.\n\nContinue?", "Purchase Cooking Grinder",
                    MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk);

            if (dialogResult == DialogResult.Yes)
            {
                ProcessStartInfo sInfo = new ProcessStartInfo("http://store.buddyauth.com/Product?productId=337");
                Process.Start(sInfo);
            }
        }

        #endregion

        #region Specific Achievement Profiles

        private void button31_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Lost and Found achievement.\n\nThis will search Pandaria for rare item spawns.\n\nContinue?";
            string title = "Lost and Found";
            int start = 2; // Lost and Found Item Grind
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button12_Click_1(object sender, EventArgs e)
        {
            string message = "You have selected the Lorewalkers Rep Grind.\n\nThis will search Pandaria for Lorewalker scrolls you've missed.\n\nContinue?";
            string title = "Lorewalkers";
            int start = 3; // Lorewalkers
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        #region World Explorer

        private void button96_Click(object sender, EventArgs e)
        {
            string message = "You have selected the World Explorer - Eastern Kingdoms Profile.\n\nThis will fly (in a set pattern) through each area of Eastern Kingdoms, uncovering all the areas you have not searched.\n\nContinue?";
            string title = "Eastern Kingdoms World Explorer";
            int start = 3001; // EK World Explorer
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button98_Click(object sender, EventArgs e)
        {
            string message = "You have selected the World Explorer - Outlands Profile.\n\nThis will fly (in a set pattern) through each area of Outlands, uncovering all the areas you have not searched.\n\nContinue?";
            string title = "Outlands World Explorer";
            int start = 3003; // Outlands World Explorer
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #endregion

        #region Grinding Profiles

        #region Timeless Isle

        private void button39_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Timeless Isle Coin Grind.\n\nThis will perform the prereq quests, collect all one time chests, then farm mobs for coins on the Timeless Isle.\n\nContinue?";
            string title = "Timeless Isle Coin Grind";
            int start = 29; // Timeless Coins
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button38_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Timeless Isle Chest Grind.\n\nThis will buy keys inside Kukuru's Cache, then use them to open chests on the Timeless Isle.\n\nContinue?";
            string title = "Timeless Isle Chest Grind";
            int start = 30; // Timeless Chests
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button40_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Crystal of Insanity Item Grind.\n\nThis will farm for the Crystal of Insanity inside the relative cave on the Timeless Isle.\n\nContinue?";
            string title = "Crystal of Insanity";
            int start = 32; // Crystal of Insanity
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Isle of Giants

        private void button36_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Direhorns Item Grind.\n\nThis will farm Direhorns on the Isle of Giants for Dino Bones. Your safety is not guaranteed.\n\nContinue?";
            string title = "Direhorn Grind";
            int start = 27; // Dino Bones Grind Direhorns
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button37_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Dinomancers Item Grind.\n\nThis will farm Dinomancers on the Isle of Giants for Dino Bones. Your safety is not guaranteed.\n\nContinue?";
            string title = "Dinomancer Grind";
            int start = 28; // Dino Bones Grind Dinomancers
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #endregion

        #region Plant Farm Grind Profiles

        private void button123_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Ironpaw Token Grind.\n\nThis will fish up large quantities of Golden Carp (among other fish) then sell them back in the form of Bundles of Groceries in exchange for Ironpaw Tokens.\nYou must have at least 7.5g in order to properly start this.\n\nContinue?";
            string title = "Ironpaw Token Grind";
            int start = 33; // Ironpaw Token Grind
            bool allowed = BrodiesPlugin.CheckPremium(); ;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button41_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Enigma Seeds Planter.\n\nThis will plant as many Enigma seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Enigma Seed Planter";
            int start = 10; // Enigma Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button42_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Green Cabbage Seeds Planter.\n\nThis will plant as many Green Cabbage seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Green Cabbage Seed Planter";
            int start = 11; // Green Cabbage Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button43_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Jade Squash Seeds Planter.\n\nThis will plant as many Jade Squash seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Jade Squash Seed Planter";
            int start = 12; // Jade Squash Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button44_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Juicyfruit Carrot Seeds Planter.\n\nThis will plant as many Juicyfruit Carrot seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Juicyfruit Carrot Seed Planter";
            int start = 13; // Juicyfruit Carrot Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button48_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Red Blossom Leek Seeds Planter.\n\nThis will plant as many Red Blossom Leek seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Red Blossom Leek Seed Planter";
            int start = 18; // Red Blossom Leek Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button47_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Scallion Seeds Planter.\n\nThis will plant as many Scallion Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Scallion Seed Planter";
            int start = 19; // Scallion Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button46_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Snakeroot Seeds Planter.\n\nThis will plant as many Snakeroot Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Snakeroot Seed Planter";
            int start = 20; // Snakeroot Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button45_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Songbell Seeds Planter.\n\nThis will plant as many Songbell Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Songbell Seed Planter";
            int start = 21; // Songbell Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button52_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Magebulb Seeds Planter.\n\nThis will plant as many Magebulb Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Magebulb Seed Planter";
            int start = 14; // Magebulb Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button51_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Mogu Pumpkin Seeds Planter.\n\nThis will plant as many Mogu Pumpkin Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Mogu Pumpkin Seed Planter";
            int start = 15; // Mogu Pumpkin Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button50_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Pink Turnip Seeds Planter.\n\nThis will plant as many Pink Turnip Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Pink Turnip Seed Planter";
            int start = 16; // Pink Turnip Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button49_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Raptorleaf Seeds Planter.\n\nThis will plant as many Raptorleaf Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Raptorleaf Seed Planter";
            int start = 17; // Raptorleaf Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button56_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Striped Melon Seeds Planter.\n\nThis will plant as many Striped Melon Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Striped Melon Seed Planter";
            int start = 22; // Striped Melon Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button55_Click(object sender, EventArgs e)
        {
            string message = "You have selected the White Turnip Seeds Planter.\n\nThis will plant as many White Turnip Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "White Turnip Seed Planter";
            int start = 23; // White Turnip Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button54_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Windshear Cactus Seeds Planter.\n\nThis will plant as many Windshear Cactus Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Windshear Cactus Seed Planter";
            int start = 24; // Windshear Cactus Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button53_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Witchberry Seeds Seeds Planter.\n\nThis will plant as many Witchberry Seeds Seeds as your farm will allow at Halfhill.\n\nContinue?";
            string title = "Witchberry Seeds Seed Planter";
            int start = 25; // Witchberry Seeds Seeds
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Reputation Grind Profiles

        #region Classic Zone Reps

        private void button60_Click(object sender, EventArgs e)
        {
            string message = "You have selected Darkmoon Faire.\n\nThis will run the dailies, monthlies, and turn in items you may have on Darkmoon Isle.You can start it on which ever continent, it will move to either your factions capital, or (if on a continent with access) to the nearest access point.  This requires Darkmoon Faire to be active.\n\nContinue?";
            string title = "Darkmoon Faire";
            int start = 102; // Darkmoon Faire
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #region Cooking Dailies

        private void button61_Click(object sender, EventArgs e)
        {
            if (Me.IsAlliance)
            {
                string message = "You have selected Stormwind Cooking Dailies.\n\nThis will run the daily quests out of Stormwind specific to cooking.\n\nContinue?";
                string title = "Stormwind Cooking";
                int start = 1011; // Stormwind Cooking
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
            if (Me.IsHorde)
            {
                string message = "You have selected Orgrimmar Cooking Dailies.\n\nThis will run the daily quests out of Orgrimmar specific to cooking.\n\nContinue?";
                string title = "Orgrimmar Cooking";
                int start = 1014; // Orgrimmar Cooking
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
        }

        private void button62_Click(object sender, EventArgs e)
        {
            if (Me.IsAlliance)
            {
                string message = "You have selected Ironforge Cooking Dailies.\n\nThis will run the daily quests out of Ironforge specific to cooking.\n\nContinue?";
                string title = "Ironforge Cooking";
                int start = 1012; // Ironforge Cooking
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
            if (Me.IsHorde)
            {
                string message = "You have selected Thunder Bluff Cooking Dailies.\n\nThis will run the daily quests out of Thunder Bluff specific to cooking.\n\nContinue?";
                string title = "Thunder Bluff Cooking";
                int start = 1015; // Thunder Bluff Cooking
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
        }

        private void button63_Click(object sender, EventArgs e)
        {
            if (Me.IsAlliance)
            {
                string message = "You have selected Darnassus Cooking Dailies.\n\nThis will run the daily quests out of Darnassus specific to cooking.\n\nContinue?";
                string title = "Darnassus Cooking";
                int start = 1013; // Darnassus Cooking
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
            if (Me.IsHorde)
            {
                string message = "You have selected Undercity Cooking Dailies.\n\nThis will run the daily quests out of Undercity specific to cooking.\n\nContinue?";
                string title = "Undercity Cooking";
                int start = 1016; // Undercity Cooking
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
        }

        #endregion

        #region Fishing Dailies

        private void button64_Click(object sender, EventArgs e)
        {
            if (Me.IsAlliance)
            {
                string message = "You have selected Stormwind Fishing Dailies.\n\nThis will run the daily quests out of Stormwind specific to fishing.\n\nContinue?";
                string title = "Stormwind Fishing";
                int start = 1081; // Stormwind Fishing
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
            if (Me.IsHorde)
            {
                string message = "You have selected Orgrimmar Fishing Dailies.\n\nThis will run the daily quests out of Orgrimmar specific to fishing.\n\nContinue?";
                string title = "Orgrimmar Fishing";
                int start = 1084; // Orgrimmar Fishing
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
        }

        private void button65_Click(object sender, EventArgs e)
        {
            if (Me.IsAlliance)
            {
                string message = "You have selected Ironforge Fishing Dailies.\n\nThis will run the daily quests out of Ironforge specific to fishing.\n\nContinue?";
                string title = "Ironforge Fishing";
                int start = 1082; // Ironforge Fishing
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
            if (Me.IsHorde)
            {
                string message = "You have selected Thunder Bluff Fishing Dailies.\n\nThis will run the daily quests out of Thunder Bluff specific to fishing.\n\nContinue?";
                string title = "Thunder Bluff Fishing";
                int start = 1085; // Thunder Bluff Fishing
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
        }

        private void button66_Click(object sender, EventArgs e)
        {
            if (Me.IsAlliance)
            {
                string message = "You have selected Darnassus Fishing Dailies.\n\nThis will run the daily quests out of Darnassus specific to fishing.\n\nContinue?";
                string title = "Darnassus Fishing";
                int start = 1083; // Darnassus Fishing
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
            if (Me.IsHorde)
            {
                string message = "You have selected Undercity Fishing Dailies.\n\nThis will run the daily quests out of Undercity specific to fishing.\n\nContinue?";
                string title = "Undercity Fishing";
                int start = 1086; // Undercity Fishing
                bool allowed = BrodiesPlugin.CheckPremium();
                StartProfileOnClick(message, title, start, allowed);
            }
        }

        #endregion

        private void button67_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Cenarion Circle Reputation Grind.\n\nThis profile will grind mobs and items for reputation towards Cenarion Circle in Silithus. You can start this profile from any location. This profile requires you be at least 60 with flying, for best results.\n\nContinue?";
            string title = "Cenarion Circle";
            int start = 103; // Cenarion Circle
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button68_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Steamwheedle Cartel Reputation Grind.\n\nThis profile will grind mobs for reputation towards the 4 Steamwheedle Cartel related reputations in Tanaris. You can start this profile from any location. This profile requires you be at least 60 with flying, for best results.\n\nContinue?";
            string title = "Steamwheedle Cartel";
            int start = 104; // Steamwheedle Cartel
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button57_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Hydraxian Waterlords Reputation Grind.\n\nThis profile will grind mobs and bosses in Molten Core for reputation towards the Hydraxian Waterlords. You can start this profile from any location. This profile requires you be at least 60 with flying, for best results.\n\nContinue?";
            string title = "Hydraxian Waterlords";
            int start = 105; // Hydraxian Waterlords
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Timbermaw Hold Reputation Grind.\n\nThis profile will grind mobs, quests and items for reputation towards Timbermaw Hold in Felwood and Winterspring. You can start this profile from any location. This profile requires you be at least 60 with flying, for best results.\n\nContinue?";
            string title = "Timbermaw Hold";
            int start = 106; // Timbermaw Hold
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button10_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Brood of Nozdormu Reputation Grind.\n\nThis profile will grind mobs, items, and bosses in Ahn'Qiraj for reputation towards Brood of Nozdormu in southern Tanaris. You can start this profile from any location. This profile requires you be 60+, geared, and with flying, for best results.\n\nContinue?";
            string title = "Brood of Nozdormu";
            int start = 107; // Brood of Nozdormu
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #region Tabard Reps

        private void pictureBox22_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Bilgewater Cartel";
                if (BMobList.BilgewaterTabard != null)
                {
                    string message = "You have selected the Bilgewater Tabard Pickup, but you already have this tabard. If you wish to pick up missing Classic tabards, please click the GRAB ALL TABARDS button below.";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Bilgewater Tabard Pickup.\n\nThis profile will pick up the Bilgewater Cartel tabard only. If you wish to pick up all tabards missing, then please click the GRAB ALL TABARDS button. Otherwise, click Yes.";
                    int start = 2001; // Bilgewater Cartel
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        private void pictureBox23_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Darkspear Trolls";
                if (BMobList.DarkspearTabard != null)
                {
                    string message = "You have selected the Darkspear Tabard Pickup, but you already have this tabard. If you wish to pick up missing Classic tabards, please click the GRAB ALL TABARDS button below.";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Darkspear Tabard Pickup.\n\nThis profile will pick up the Darkspear Troll tabard only. If you wish to pick up all tabards missing, then please click the GRAB ALL TABARDS button. Otherwise, click Yes.";
                    int start = 2002; // Darkspear Trolls
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        private void pictureBox24_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Huojin Pandaren";
                if (BMobList.HuojinTabard != null)
                {
                    string message = "You have selected the Huojin Tabard Pickup, but you already have this tabard. If you wish to pick up missing Classic tabards, please click the GRAB ALL TABARDS button below.";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Huojin Tabard Pickup.\n\nThis profile will pick up the Huojin Pandaren tabard only. If you wish to pick up all tabards missing, then please click the GRAB ALL TABARDS button. Otherwise, click Yes.";
                    int start = 2003; // Huojin Pandaren
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        private void pictureBox28_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Orgrimmar";
                if (BMobList.OrgrimmarTabard != null)
                {
                    string message = "You have selected the Orgrimmar Tabard Pickup, but you already have this tabard. If you wish to pick up missing Classic tabards, please click the GRAB ALL TABARDS button below.";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Orgrimmar Tabard Pickup.\n\nThis profile will pick up the Orgrimmar tabard only. If you wish to pick up all tabards missing, then please click the GRAB ALL TABARDS button. Otherwise, click Yes.";
                    int start = 2004; // Orgrimmar
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        private void pictureBox25_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Silvermoon";
                if (BMobList.SilvermoonTabard != null)
                {
                    string message = "You have selected the Silvermoon Tabard Pickup, but you already have this tabard. If you wish to pick up missing Classic tabards, please click the GRAB ALL TABARDS button below.";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Silvermoon Tabard Pickup.\n\nThis profile will pick up the Silvermoon tabard only. If you wish to pick up all tabards missing, then please click the GRAB ALL TABARDS button. Otherwise, click Yes.";
                    int start = 2005; // Silvermoon
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        private void pictureBox26_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Thunder Bluff";
                if (BMobList.ThunderBluffTabard != null)
                {
                    string message = "You have selected the Thunder Bluff Tabard Pickup, but you already have this tabard. If you wish to pick up missing Classic tabards, please click the GRAB ALL TABARDS button below.";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Thunder Bluff Tabard Pickup.\n\nThis profile will pick up the Thunder Bluff tabard only. If you wish to pick up all tabards missing, then please click the GRAB ALL TABARDS button. Otherwise, click Yes.";
                    int start = 2006; // Thunder Bluff
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        private void pictureBox27_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Undercity";
                if (BMobList.UndercityTabard != null)
                {
                    string message = "You have selected the Undercity Tabard Pickup, but you already have this tabard. If you wish to pick up missing Classic tabards, please click the GRAB ALL TABARDS button below.";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Undercity Tabard Pickup.\n\nThis profile will pick up the Undercity tabard only. If you wish to pick up all tabards missing, then please click the GRAB ALL TABARDS button. Otherwise, click Yes.";
                    int start = 2007; // Undercity
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        private void button83_Click(object sender, EventArgs e)
        {
            if (Me.IsHorde)
            {
                string title = "Undercity";
                if (BMobList.UndercityTabard != null && BMobList.BilgewaterTabard != null && BMobList.DarkspearTabard != null && BMobList.GnomereganTabard != null && BMobList.HuojinTabard != null && BMobList.OrgrimmarTabard != null && BMobList.ThunderBluffTabard != null)
                {
                    string message = "You have selected the Grab All Tabards profile, but you already have all 7 classic tabards. Sorry!";
                    var dialogResult = MessageBox.Show
                        (message, title,
                        MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
                }
                else
                {
                    string message = "You have selected the Grab All Tabards profile.\n\nThis profile will pick up all 7 classic tabards (in a set order).\n\nContinue?";
                    int start = 2008; // Grab All Tabards
                    bool allowed = BrodiesPlugin.CheckPremium();
                    StartProfileOnClick(message, title, start, allowed);
                }
            }
            if (Me.IsAlliance)
            {

            }
        }

        #endregion

        #endregion

        #region The Burning Crusade Reps

        private void button70_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Ogri'la Dailies Run.\n\nThis profile will run dailies for reputation towards Ogri'la. You can start this profile from any location, and will move (in whatever manner is most efficient) to the Outlands -- Blade's Edge Mountains. This profile requires you be 70+ with flying.\n\nContinue?";
            string title = "Ogri'la";
            int start = 110; // Ogri'la
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button69_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Netherwing Dailies Run/Rep Grind.\n\nThis profile will run dailies for reputation towards Netherwing before grinding for repeatable turn in items. You can start this profile from any location, and will move (in whatever manner is most efficient) to the Outlands -- Netherstorm. This profile requires you be 70+ with flying.\n\nContinue?";
            string title = "Netherwing";
            int start = 111; // Netherwing
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button58_Click(object sender, EventArgs e)
        {
            string message = "You have selected Outlands Cooking Dailies.\n\nThis will run the daily quest(s) out of Shattrath specific to cooking.\n\nContinue?";
            string title = "Outlands Cooking";
            int start = 112; // Outlands Cooking
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button59_Click(object sender, EventArgs e)
        {
            string message = "You have selected Outlands Fishing Dailies.\n\nThis will run the daily quest(s) out of Shattrath specific to fishing.\n\nContinue?";
            string title = "Outlands Fishing";
            int start = 113; // Outlands Fishing
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button72_Click(object sender, EventArgs e)
        {
            int start = 115; // Thrallmar / Honor Hold
            bool allowed = BrodiesPlugin.CheckPremium();
            string title;
            string message;
            if (Me.IsAlliance)
            {
                message = "You have selected the Honor Hold Reputation Grind.\n\nThis profile will grind mobs, quests, and bosses in Shattered Halls for reputation. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Hellfire Peninsula. This profile recommends you be 70+, geared, and with flying, for best and fastest results.\n\nContinue?";
                title = "Honor Hold";
            }
            else
            {
                message = "You have selected the Thrallmar Reputation Grind.\n\nThis profile will grind mobs, quests, and bosses in Shattered Halls for reputation. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Hellfire Peninsula. This profile recommends you be 70+, geared, and with flying, for best and fastest results.\n\nContinue?";
                title = "Thrallmar";
            }
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button73_Click(object sender, EventArgs e)
        {
            int start = 117; // Kurenai / The Mag'har
            bool allowed = BrodiesPlugin.CheckPremium();
            string title;
            string message;
            if (Me.IsAlliance)
            {
                message = "You have selected the Kurenai Reputation Grind.\n\nThis profile will grind mobs and items in Nagrand for reputation. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Nagrand. This profile recommends you be 70+, geared, and with flying, for best and fastest results.\n\nContinue?";
                title = "Kurenai";
            }
            else
            {
                message = "You have selected The Mag'har Reputation Grind.\n\nThis profile will grind mobs and items in Nagrand for reputation. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Nagrand. This profile recommends you be 70+, geared, and with flying, for best and fastest results.\n\nContinue?";
                title = "The Mag'har";
            }
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button75_Click(object sender, EventArgs e)
        {
            string message = "You have selected The Consortium Reputation Grind.\n\nThis profile will grind mobs for items and do minimal quests south of Area 52 in Netherstorm for reputation.\n\nContinue?";
            string title = "The Consortium";
            int start = 119; // The Consortium
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button82_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Lower City Reputation Grind.\n\nThis profile will grind mobs, quests, and bosses in The Shadow Labyrinth for reputation towards Lower City. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Terokkar Forest.\n\nContinue?";
            string title = "Lower City";
            int start = 120; // Lower City
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button81_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Sha'tari Skyguard Reputation Grind.\n\nThis profile will grind mobs, quests, and items in Skettis for reputation towards Sha'tari Skyguard. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Terokkar Forest.\n\nContinue?";
            string title = "Sha'tari Skyguard";
            int start = 121; // Sha'tari Skyguard
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button79_Click(object sender, EventArgs e)
        {
            string message = "You have selected the The Aldor Reputation Grind.\n\nThis profile will grind mobs for items in the Shadow Labyrinth for reputation towards The Aldor. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Terokkar Forest.\n\nContinue?";
            string title = "The Aldor";
            int start = 123; // Aldor
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button78_Click(object sender, EventArgs e)
        {
            string message = "You have selected the The Scryers Reputation Grind.\n\nThis profile will grind mobs for items in The Botanica for reputation towards The Scryers. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Netherstorm.\n\nContinue?";
            string title = "The Scryers";
            int start = 124; // Scryers
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button77_Click(object sender, EventArgs e)
        {
            string message = "You have selected the The Sha'tar Reputation Grind.\n\nThis profile will grind mobs in The Botanica for reputation towards The Sha'tar. You can start this profile from any location, and will move (in whatever manner is most efficient) to Outlands -- Netherstorm.\n\nContinue?";
            string title = "The Sha'tar";
            int start = 125; // Sha'tar
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button14_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Scale of the Sands Reputation Grind.\n\nThis profile will grind mobs and bosses in Hyjal Summit for reputation towards Scale of the Sands. You can start this profile from any location, and will move (in whatever manner is most efficient) to Kalimdor -- Tanaris - Caverns of Time.\n\nContinue?";
            string title = "Scale of the Sands";
            int start = 120; // Scale of the Sands NOT YET SET!
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Wrath of the Lich King Reps

        #endregion

        #region Cataclysm Reps

        #endregion

        #region Pandaria Reps

        private void button34_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Black Prince rep grind.\n\nThis will farm Za'tual in the Isle of Thunder for reputation.\n\nContinue?";
            string title = "The Black Prince";
            int start = 26; // Black Prince Rep
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button35_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Emperor Shaohao rep grind.\n\nThis will farm the Firewalker Ruins on the Timeless Isle for reputation.\n\nContinue?";
            string title = "Emperor Shaohao";
            int start = 31; // Shaohao Rep Grind
            bool allowed = true;
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Warlords of Draenor Reps

        #endregion

        #endregion

        #region Holiday Starters

        #region Noblegarden

        private void button17_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Chocoholic Achievement grind.\n\nThis will eat ALL of your chocolates in your inventory. It will stop when you either run out, or get the achievement.\nThis profile will NOT farm for more chocolate, just eat it.\n\nContinue?";
            string title = "Chocoholic";
            int start = 200; // Chocoholic
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button18_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Noblegarden Quest and Egg Grind profile.\n\nThis profile will head to one of the starting areas to farm for Easter Eggs. It is set to work in Stormwind/Elwynn Forest, and Orgrimmar/Razor Hill only. It will head to your area no matter which continent you are on.\n\nContinue?";
            string title = "Noblegarden";
            int start = 201; // Noblegarden Quests and Easter Egg Grind
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Children's Week

        private void button20_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Azeroth Children's Week profile.\n\nThis will complete all the quests associated with your faction capital's orphanage in Azeroth.\n\nContinue?";
            string title = "Azeroth Children's Week";
            int start = 202; // Stormwind/Orgrimmar Children Week
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button21_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Outlands Children's Week profile.\n\nThis will complete all the quests associated with your faction's orphanage in Shattrath.\n\nContinue?";
            string title = "Outlands Children's Week";
            int start = 203; // Outlands Children's Week
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button23_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Wolvar Children's Week profile.\n\nThis will complete all the quests associated with the Wolvar orphan in Dalaran.\nOnce started, you can not start the Oracles quest line this year.\n\nContinue?";
            string title = "Wolvar Children's Week";
            int start = 204; // Wolvar Children's Week
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button24_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Oracle Children's Week profile.\n\nThis will complete all the quests associated with the Oracle orphan in Dalaran.\nOnce started, you can not start the Wolvar's quest line this year.\n\nContinue?";
            string title = "Oracle Children's Week";
            int start = 205; // Oracle Children's Week
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Midsummer Fire Festival

        private void button26_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Midsummer Fire Festival (Kalimdor) profile.\n\nThis will extinguish and honor all bonfires in Kalimdor.\n\nContinue?";
            string title = "Midsummer Fire Festival - Kalimdor";
            int start = 206; // Kalimdor Fire Festival
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button27_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Midsummer Fire Festival (Eastern Kingdoms) profile.\n\nThis will extinguish and honor all bonfires in Eastern Kingdoms.\n\nContinue?";
            string title = "Midsummer Fire Festival - Eastern Kingdoms";
            int start = 207; // Eastern Kingdoms Fire Festival
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button30_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Midsummer Fire Festival (Outlands) profile.\n\nThis will extinguish and honor all bonfires in Outlands.\n\nContinue?";
            string title = "Midsummer Fire Festival - Outlands";
            int start = 208; // Outlands Fire Festival
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button28_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Midsummer Fire Festival (Northrend) profile.\n\nThis will extinguish and honor all bonfires in Northrend.\n\nContinue?";
            string title = "Midsummer Fire Festival - Northrend";
            int start = 209; // Northrend Fire Festival
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button29_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Midsummer Fire Festival (Pandaria) profile.\n\nThis will extinguish and honor all bonfires in Pandaria.\n\nContinue?";
            string title = "Midsummer Fire Festival - Pandaria";
            int start = 210; // Pandaria Fire Festival
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Brewfest

        private void button126_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Brewfest profile.\n\nThis will run all yellow quests and several achievements for you!\n\nWARNING! Not supported: Any quests involving the ram using pathing. HB cannot keep up with the ram and it will fail in movement.\n\nContinue?";
            string title = "Brewfest";
            int start = 211; // Brewfest
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #region Hallows End

        private void button129_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Eastern Kingdoms Candy Collector Achievement grind.\n\nThis will visit all the Candy Buckets in Eastern Kingdoms and complete the achievement for you for the year.\nPlease note you MUST start this profile in EK, or it will fail.\n\nContinue?";
            string title = "Eastern Kingdoms Candy Buckets";
            int start = 212; // Hallows End - EK
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button128_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Kalimdor Candy Collector Achievement grind.\n\nThis will visit all the Candy Buckets in Kalimdor and complete the achievement for you for the year.\nPlease note you MUST start this profile in Kalimdor, or it will fail.\n\nContinue?";
            string title = "Kalimdor Candy Buckets";
            int start = 213; // Hallows End - Kalimdor
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button131_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Outlands Candy Collector Achievement grind.\n\nThis will visit all the Candy Buckets in Outlands and complete the achievement for you for the year.\nPlease note you MUST start this profile in Outlands, or it will fail.\n\nContinue?";
            string title = "Outlands Candy Buckets";
            int start = 214; // Hallows End - Outlands
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button127_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Northrend Candy Collector Achievement grind.\n\nThis will visit all the Candy Buckets in Northrend and complete the achievement for you for the year.\nPlease note you MUST start this profile in Northrend, or it will fail.\n\nContinue?";
            string title = "Northrend Candy Buckets";
            int start = 215; // Hallows End - Northrend
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button130_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Pandaria Candy Collector Achievement grind.\n\nThis will visit all the Candy Buckets in Pandaria and complete the achievement for you for the year.\nPlease note you MUST start this profile in Pandaria, or it will fail.\n\nContinue?";
            string title = "Pandaria Candy Buckets";
            int start = 216; // Hallows End - Pandaria
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button132_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Hallows End Achievement grind.\n\nThis will attempt to do as many of the achievements as can be automated.\n\nContinue?";
            string title = "Hallows End Achievements";
            int start = 217; // Hallows End Achievements
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

        #endregion

        #region Spell Avoidance and Item Usage

        public static void SetCheckBox(CheckBox[] cb, bool setting)
        {
            foreach(var Checkbox in cb)
                Checkbox.Checked = setting;
        }

        public void ChangeAllItems(bool change)
        {
            SASettings.Instance.CrystalOfInsanity = change;
            SASettings.Instance.WhisperingCrystal = change;
            SASettings.Instance.Windfeather = change;
            SASettings.Instance.SingingCrystal = change;
            SASettings.Instance.BookAges = change;
            SASettings.Instance.DewMorning = change;
            SASettings.Instance.BubblingPijiu = change;
            SASettings.Instance.MistyPijiu = change;
            SASettings.Instance.ThickPijiu = change;
            SASettings.Instance.CrescentSaberfish = change;
            SASettings.Instance.BlackwaterWhiptail = change;
            SASettings.Instance.SeaScorpion = change;
            SASettings.Instance.FireAmmonite = change;
            SASettings.Instance.FatSleeper = change;
            SASettings.Instance.JawlessSkulker = change;
            SASettings.Instance.AbyssalGulperEel = change;
            SASettings.Instance.BlindLakeSturgeon = change;
            SASettings.Instance.AutoUseLures = change;

            SASettings.Instance.Save();
        }

        public static void ChangeAllPandariaProper(bool change)
        {
            SASettings.Instance.LightningPool = change;
            SASettings.Instance.CausticPitch = change;
            SASettings.Instance.VenomSplash = change;
            SASettings.Instance.HotFoot = change;
            SASettings.Instance.IgniteFuel = change;
            SASettings.Instance.SolarBeam = change;
            SASettings.Instance.BootToTheHead = change;
            SASettings.Instance.ShadowFissure = change;
            SASettings.Instance.DevastatingArc = change;
            SASettings.Instance.ReavingClaws = change;
            SASettings.Instance.LightningCrash = change;
            SASettings.Instance.DreadSlash = change;
            SASettings.Instance.ThunderCrush = change;
            SASettings.Instance.VengefulSpirit = change;
            SASettings.Instance.DoubleSweep = change;
            SASettings.Instance.CrescentSaberfish = change;
            SASettings.Instance.SeaScorpion = change;
            SASettings.Instance.FireAmmonite = change;
            SASettings.Instance.FatSleeper = change;
            SASettings.Instance.JawlessSkulker = change;
            SASettings.Instance.AbyssalGulperEel = change;
            SASettings.Instance.BlindLakeSturgeon = change;

            SASettings.Instance.Save();
        }

        public static void ChangeAllIoT(bool change)
        {
            SASettings.Instance.LightningCrack = change;
            SASettings.Instance.WaveOfMight = change;
            SASettings.Instance.BallLightning = change;
            SASettings.Instance.RingOfThunder = change;
            SASettings.Instance.ColumnOfThunder = change;
            SASettings.Instance.EnergizedMetal = change;
            SASettings.Instance.WhirlingAttack = change;
            SASettings.Instance.RiversOfBlood = change;
            SASettings.Instance.VileSpit = change;
            SASettings.Instance.AcidicRegurgitation = change;
            SASettings.Instance.FetidQuake = change;

            SASettings.Instance.Save();
        }

        public static void ChangeAllTimeless(bool change)
        {
            SASettings.Instance.RendingSwipe = change;
            SASettings.Instance.GreaterSwipe = change;
            SASettings.Instance.Geyser = change;
            SASettings.Instance.ShellSpin = change;
            SASettings.Instance.GustOfWind = change;
            SASettings.Instance.Headbutt = change;
            SASettings.Instance.OxCharge = change;
            SASettings.Instance.Stomp = change;
            SASettings.Instance.SpinningCraneKick = change;
            SASettings.Instance.ClawFlurry = change;
            SASettings.Instance.BreathOfFire = change;
            SASettings.Instance.CracklingBlow = change;
            SASettings.Instance.BlazingBlow = change;
            SASettings.Instance.BurningSacrifice = change;
            SASettings.Instance.BlazingCleave = change;
            SASettings.Instance.DefensiveShield = change;

            SASettings.Instance.Save();
        }

        #region Item Usage

        private void button94_Click(object sender, EventArgs e)
        {
            // Disable All Items
            ChangeAllItems(false);
            CheckBox[] itemCheckBoxList = new CheckBox[] { checkBox14, checkBox22, checkBox19, checkBox20, checkBox18, checkBox34, checkBox35, checkBox36, checkBox65, checkBox66, checkBox67, checkBox68, checkBox69, checkBox70, checkBox71, checkBox93, checkBox94, checkBox101 };
            SetCheckBox(itemCheckBoxList, false);
        }

        private void button95_Click(object sender, EventArgs e)
        {
            // Enable All Items
            ChangeAllItems(true);
            CheckBox[] itemCheckBoxList = new CheckBox[] { checkBox14, checkBox22, checkBox19, checkBox20, checkBox18, checkBox34, checkBox35, checkBox36, checkBox65, checkBox66, checkBox67, checkBox68, checkBox69, checkBox70, checkBox71, checkBox93, checkBox94, checkBox101 };
            SetCheckBox(itemCheckBoxList, true);
        }

        private void checkBox14_CheckedChanged(object sender, EventArgs e)
        {
            // Crystal of Insanity
            SASettings.Instance.CrystalOfInsanity = checkBox14.Checked;
        }

        private void checkBox94_CheckedChanged(object sender, EventArgs e)
        {
            // Oralius' Whispering Crystal
            SASettings.Instance.WhisperingCrystal = checkBox94.Checked;
        }

        private void checkBox22_CheckedChanged(object sender, EventArgs e)
        {
            // Windfeather Plume
            SASettings.Instance.Windfeather = checkBox22.Checked;
        }

        private void checkBox19_CheckedChanged(object sender, EventArgs e)
        {
            // Singing Crystal
            SASettings.Instance.SingingCrystal = checkBox19.Checked;
        }

        private void checkBox20_CheckedChanged(object sender, EventArgs e)
        {
            // Book of the Ages
            SASettings.Instance.BookAges = checkBox20.Checked;
        }

        private void checkBox18_CheckedChanged(object sender, EventArgs e)
        {
            // Dew of Eternal Morning
            SASettings.Instance.DewMorning = checkBox18.Checked;
        }

        private void checkBox35_CheckedChanged(object sender, EventArgs e)
        {
            // Bubbling Pi'jiu Brew
            SASettings.Instance.BubblingPijiu = checkBox35.Checked;
        }

        private void checkBox34_CheckedChanged(object sender, EventArgs e)
        {
            // Misty Pi'jiu Brew
            SASettings.Instance.MistyPijiu = checkBox34.Checked;
        }

        private void checkBox36_CheckedChanged(object sender, EventArgs e)
        {
            // Thick Pi'jiu Brew
            SASettings.Instance.ThickPijiu = checkBox36.Checked;
        }

        #endregion

        #region Pandaria Proper

        private void button85_Click(object sender, EventArgs e)
        {
            // Enable All Pandaria Proper Spell Avoidances
            ChangeAllPandariaProper(true);
            CheckBox[] pandariaProperCheckBoxList = new CheckBox[] { checkBox23, checkBox24, checkBox25, checkBox16, checkBox17, checkBox21, checkBox15, checkBox26, checkBox27, checkBox28, checkBox29, checkBox30, checkBox31, checkBox32, checkBox33 };
            SetCheckBox(pandariaProperCheckBoxList, true);
        }

        private void button86_Click(object sender, EventArgs e)
        {
            // Disable All Pandaria Proper Spell Avoidances
            ChangeAllPandariaProper(false);
            CheckBox[] pandariaProperCheckBoxList = new CheckBox[] { checkBox23, checkBox24, checkBox25, checkBox16, checkBox17, checkBox21, checkBox15, checkBox26, checkBox27, checkBox28, checkBox29, checkBox30, checkBox31, checkBox32, checkBox33 };
            SetCheckBox(pandariaProperCheckBoxList, false);
        }

        private void checkBox23_CheckedChanged(object sender, EventArgs e)
        {
            // Lightning Pool
            SASettings.Instance.LightningPool = checkBox23.Checked;
        }

        private void checkBox24_CheckedChanged(object sender, EventArgs e)
        {
            // Caustic Pitch
            SASettings.Instance.CausticPitch = checkBox24.Checked;
        }

        private void checkBox25_CheckedChanged(object sender, EventArgs e)
        {
            // Venom Splash
            SASettings.Instance.VenomSplash = checkBox25.Checked;
        }

        private void checkBox16_CheckedChanged(object sender, EventArgs e)
        {
            // Hot Foot
            SASettings.Instance.HotFoot = checkBox16.Checked;
        }

        private void checkBox17_CheckedChanged(object sender, EventArgs e)
        {
            // Ignite Fuel
            SASettings.Instance.IgniteFuel = checkBox17.Checked;
        }

        private void checkBox21_CheckedChanged(object sender, EventArgs e)
        {
            // Solar Beam
            SASettings.Instance.SolarBeam = checkBox21.Checked;
        }

        private void checkBox15_CheckedChanged(object sender, EventArgs e)
        {
            // Boot To The Head
            SASettings.Instance.BootToTheHead = checkBox15.Checked;
        }

        private void checkBox26_CheckedChanged(object sender, EventArgs e)
        {
            // Shadow Fissure
            SASettings.Instance.ShadowFissure = checkBox26.Checked;
        }

        private void checkBox27_CheckedChanged(object sender, EventArgs e)
        {
            // Devastating Arc
            SASettings.Instance.DevastatingArc = checkBox27.Checked;
        }

        private void checkBox28_CheckedChanged(object sender, EventArgs e)
        {
            // Reaving Claws
            SASettings.Instance.ReavingClaws = checkBox28.Checked;
        }

        private void checkBox29_CheckedChanged(object sender, EventArgs e)
        {
            // Lightning Crash
            SASettings.Instance.LightningCrash = checkBox29.Checked;
        }

        private void checkBox30_CheckedChanged(object sender, EventArgs e)
        {
            // Dread Slash
            SASettings.Instance.DreadSlash = checkBox30.Checked;
        }

        private void checkBox31_CheckedChanged(object sender, EventArgs e)
        {
            // Thunder Crush
            SASettings.Instance.ThunderCrush = checkBox31.Checked;
        }

        private void checkBox32_CheckedChanged(object sender, EventArgs e)
        {
            // Vengeful Spirit
            SASettings.Instance.VengefulSpirit = checkBox32.Checked;
        }

        private void checkBox33_CheckedChanged(object sender, EventArgs e)
        {
            // Double Sweep
            SASettings.Instance.DoubleSweep = checkBox33.Checked;
        }

        #endregion

        #region Isle Of Thunder

        private void button91_Click(object sender, EventArgs e)
        {
            // Enables all Spells in IoT
            ChangeAllIoT(true);
            CheckBox[] IoTCheckBoxList = new CheckBox[] { checkBox42, checkBox40, checkBox38, checkBox37, checkBox44, checkBox43, checkBox45, checkBox46, checkBox41, checkBox47 };
            SetCheckBox(IoTCheckBoxList, true);
        }

        private void button90_Click(object sender, EventArgs e)
        {
            // Disables all Spells in IoT
            ChangeAllIoT(false);
            CheckBox[] IoTCheckBoxList = new CheckBox[] { checkBox42, checkBox40, checkBox38, checkBox37, checkBox44, checkBox43, checkBox45, checkBox46, checkBox41, checkBox47 };
            SetCheckBox(IoTCheckBoxList, false);
        }

        private void checkBox42_CheckedChanged(object sender, EventArgs e)
        {
            // Lightning Crack
            SASettings.Instance.LightningCrack = checkBox42.Checked;
        }

        private void checkBox40_CheckedChanged(object sender, EventArgs e)
        {
            // Wave of Might
            SASettings.Instance.WaveOfMight = checkBox40.Checked;
        }

        private void checkBox38_CheckedChanged(object sender, EventArgs e)
        {
            // Ball Lightning
            SASettings.Instance.BallLightning = checkBox38.Checked;
        }

        private void checkBox37_CheckedChanged(object sender, EventArgs e)
        {
            // Ring Of Thunder
            SASettings.Instance.RingOfThunder = checkBox37.Checked;
        }

        private void checkBox39_CheckedChanged(object sender, EventArgs e)
        {
            // Column Of Thunder
            SASettings.Instance.ColumnOfThunder = checkBox39.Checked;
        }

        private void checkBox44_CheckedChanged(object sender, EventArgs e)
        {
            // Energized Metal
            SASettings.Instance.EnergizedMetal = checkBox44.Checked;
        }

        private void checkBox43_CheckedChanged(object sender, EventArgs e)
        {
            // Whirling Attack
            SASettings.Instance.WhirlingAttack = checkBox43.Checked;
        }

        private void checkBox45_CheckedChanged(object sender, EventArgs e)
        {
            // Rivers Of Blood
            SASettings.Instance.RiversOfBlood = checkBox45.Checked;
        }

        private void checkBox46_CheckedChanged(object sender, EventArgs e)
        {
            // Vile Spit
            SASettings.Instance.VileSpit = checkBox46.Checked;
        }

        private void checkBox41_CheckedChanged(object sender, EventArgs e)
        {
            // Acidic Regurgitation
            SASettings.Instance.AcidicRegurgitation = checkBox41.Checked;
        }

        private void checkBox47_CheckedChanged(object sender, EventArgs e)
        {
            // Fetid Quake
            SASettings.Instance.FetidQuake = checkBox47.Checked;
        }

        #endregion

        #region Timeless Isle

        private void button93_Click(object sender, EventArgs e)
        {
            // Enable all Spells on Timeless Isle
            ChangeAllTimeless(true);
            CheckBox[] TimelessCheckBoxList = new CheckBox[] { checkBox52, checkBox51, checkBox50, checkBox49, checkBox53, checkBox54, checkBox48, checkBox56, checkBox55, checkBox57, checkBox59, checkBox58, checkBox60, checkBox61, checkBox62, checkBox63 };
            SetCheckBox(TimelessCheckBoxList, true);
        }

        private void button92_Click(object sender, EventArgs e)
        {
            // Disable all Spells on Timeless Isle
            ChangeAllTimeless(false);
            CheckBox[] TimelessCheckBoxList = new CheckBox[] { checkBox52, checkBox51, checkBox50, checkBox49, checkBox53, checkBox54, checkBox48, checkBox56, checkBox55, checkBox57, checkBox59, checkBox58, checkBox60, checkBox61, checkBox62, checkBox63 };
            SetCheckBox(TimelessCheckBoxList, false);
        }

        private void checkBox52_CheckedChanged(object sender, EventArgs e)
        {
            // Rending Swipe
            SASettings.Instance.RendingSwipe = checkBox52.Checked;
        }

        private void checkBox51_CheckedChanged(object sender, EventArgs e)
        {
            // Greater Swipe
            SASettings.Instance.GreaterSwipe = checkBox51.Checked;
        }

        private void checkBox50_CheckedChanged(object sender, EventArgs e)
        {
            // Geyser
            SASettings.Instance.Geyser = checkBox50.Checked;
        }

        private void checkBox49_CheckedChanged(object sender, EventArgs e)
        {
            // Shell Spin
            SASettings.Instance.ShellSpin = checkBox49.Checked;
        }

        private void checkBox53_CheckedChanged(object sender, EventArgs e)
        {
            // Gust Of Wind
            SASettings.Instance.GustOfWind = checkBox53.Checked;
        }

        private void checkBox54_CheckedChanged(object sender, EventArgs e)
        {
            // Headbutt
            SASettings.Instance.Headbutt = checkBox54.Checked;
        }

        private void checkBox48_CheckedChanged(object sender, EventArgs e)
        {
            // Ox Charge
            SASettings.Instance.OxCharge = checkBox48.Checked;
        }

        private void checkBox56_CheckedChanged(object sender, EventArgs e)
        {
            // Stomp
            SASettings.Instance.Stomp = checkBox56.Checked;
        }

        private void checkBox55_CheckedChanged(object sender, EventArgs e)
        {
            // Spinning Crane Kick
            SASettings.Instance.SpinningCraneKick = checkBox55.Checked;
        }

        private void checkBox57_CheckedChanged(object sender, EventArgs e)
        {
            // Claw Flurry
            SASettings.Instance.ClawFlurry = checkBox57.Checked;
        }

        private void checkBox59_CheckedChanged(object sender, EventArgs e)
        {
            // Breath of Fire
            SASettings.Instance.BreathOfFire = checkBox59.Checked;

        }

        private void checkBox58_CheckedChanged(object sender, EventArgs e)
        {
            // Crackling Blow
            SASettings.Instance.CracklingBlow = checkBox58.Checked;
        }

        private void checkBox60_CheckedChanged(object sender, EventArgs e)
        {
            // Blazing Blow
            SASettings.Instance.BlazingBlow = checkBox60.Checked;
        }

        private void checkBox61_CheckedChanged(object sender, EventArgs e)
        {
            // Burning Sacrifice
            SASettings.Instance.BurningSacrifice = checkBox61.Checked;
        }

        private void checkBox62_CheckedChanged(object sender, EventArgs e)
        {
            // Blazing Cleave
            SASettings.Instance.BlazingCleave = checkBox62.Checked;
        }

        private void checkBox63_CheckedChanged(object sender, EventArgs e)
        {
            // Defensive Shield
            SASettings.Instance.DefensiveShield = checkBox63.Checked;
        }

        #endregion

        #region Draenor Fishing

        private void checkBox66_CheckedChanged(object sender, EventArgs e)
        {
            // Crescent Saberfish
            SASettings.Instance.CrescentSaberfish = checkBox66.Checked;
        }

        private void checkBox67_CheckedChanged(object sender, EventArgs e)
        {
            // Sea Scorpion
            SASettings.Instance.SeaScorpion = checkBox67.Checked;
        }

        private void checkBox65_CheckedChanged(object sender, EventArgs e)
        {
            // Fire Ammonite
            SASettings.Instance.FireAmmonite = checkBox65.Checked;
        }

        private void checkBox68_CheckedChanged(object sender, EventArgs e)
        {
            // Jawless Skulker
            SASettings.Instance.JawlessSkulker = checkBox68.Checked;
        }

        private void checkBox69_CheckedChanged(object sender, EventArgs e)
        {
            // Fat Sleeper
            SASettings.Instance.FatSleeper = checkBox69.Checked;
        }

        private void checkBox70_CheckedChanged(object sender, EventArgs e)
        {
            // Abyssal Gulper Eel
            SASettings.Instance.AbyssalGulperEel = checkBox70.Checked;
        }

        private void checkBox71_CheckedChanged(object sender, EventArgs e)
        {
            // Blind Lake Sturgeon
            SASettings.Instance.BlindLakeSturgeon = checkBox71.Checked;
        }

        private void checkBox93_CheckedChanged(object sender, EventArgs e)
        {
            // Blackwater Whiptail
            SASettings.Instance.BlackwaterWhiptail = checkBox93.Checked;
        }

        private void checkBox101_CheckedChanged(object sender, EventArgs e)
        {
            // Auto-use Draenor fish lures
            SASettings.Instance.AutoUseLures = checkBox101.Checked;
        }

        #endregion

        private void button87_Click(object sender, EventArgs e)
        {
            // Enables Every Spell Avoidance and Item
            ChangeAllItems(true);
            CheckBox[] itemCheckBoxList = new CheckBox[] { checkBox14, checkBox22, checkBox19, checkBox20, checkBox18, checkBox34, checkBox35, checkBox36, checkBox65, checkBox66, checkBox67, checkBox68, checkBox69, checkBox70, checkBox71, checkBox93, checkBox94, checkBox101 };
            SetCheckBox(itemCheckBoxList, true);
            ChangeAllPandariaProper(true);
            CheckBox[] pandariaProperCheckBoxList = new CheckBox[] { checkBox23, checkBox24, checkBox25, checkBox16, checkBox17, checkBox21, checkBox15, checkBox26, checkBox27, checkBox28, checkBox29, checkBox30, checkBox31, checkBox32, checkBox33 };
            SetCheckBox(pandariaProperCheckBoxList, true);
            ChangeAllIoT(true);
            CheckBox[] IoTCheckBoxList = new CheckBox[] { checkBox42, checkBox40, checkBox38, checkBox37, checkBox44, checkBox43, checkBox45, checkBox46, checkBox41, checkBox47 };
            SetCheckBox(IoTCheckBoxList, true);
            ChangeAllTimeless(true);
            CheckBox[] TimelessCheckBoxList = new CheckBox[] { checkBox52, checkBox51, checkBox50, checkBox49, checkBox53, checkBox54, checkBox48, checkBox56, checkBox55, checkBox57, checkBox59, checkBox58, checkBox60, checkBox61, checkBox62, checkBox63 };
            SetCheckBox(TimelessCheckBoxList, true);
        }

        private void button88_Click(object sender, EventArgs e)
        {
            // Disables Every Spell Avoidance and Item
            ChangeAllItems(false);
            CheckBox[] itemCheckBoxList = new CheckBox[] { checkBox14, checkBox22, checkBox19, checkBox20, checkBox18, checkBox34, checkBox35, checkBox36, checkBox65, checkBox66, checkBox67, checkBox68, checkBox69, checkBox70, checkBox71, checkBox93, checkBox94, checkBox101 };
            SetCheckBox(itemCheckBoxList, false);
            ChangeAllPandariaProper(false);
            CheckBox[] pandariaProperCheckBoxList = new CheckBox[] { checkBox23, checkBox24, checkBox25, checkBox16, checkBox17, checkBox21, checkBox15, checkBox26, checkBox27, checkBox28, checkBox29, checkBox30, checkBox31, checkBox32, checkBox33 };
            SetCheckBox(pandariaProperCheckBoxList, false);
            ChangeAllIoT(false);
            CheckBox[] IoTCheckBoxList = new CheckBox[] { checkBox42, checkBox40, checkBox38, checkBox37, checkBox44, checkBox43, checkBox45, checkBox46, checkBox41, checkBox47 };
            SetCheckBox(IoTCheckBoxList, false);
            ChangeAllTimeless(false);
            CheckBox[] TimelessCheckBoxList = new CheckBox[] { checkBox52, checkBox51, checkBox50, checkBox49, checkBox53, checkBox54, checkBox48, checkBox56, checkBox55, checkBox57, checkBox59, checkBox58, checkBox60, checkBox61, checkBox62, checkBox63 };
            SetCheckBox(TimelessCheckBoxList, false);
        }

        #endregion

        #region Tabard Auto-Equip Screen

        private void checkBox64_CheckedChanged(object sender, EventArgs e)
        {
            // Enable Auto-Equip
            if (!BrodiesPlugin.CheckPremium())
            {
                checkBox64.Checked = false;
                var dialogResult = MessageBox.Show
                    ("The Tabard auto-equip feature is limited to the full version only. To use, please purchase the full version of TBM Profile Compendium. Sorry.", "Not Authorized to Use.",
                    MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
            }
            BPGlobalSettings.Instance.TabardAutoEquip = checkBox64.Checked;
            BPGlobalSettings.Instance.Save();
        }

        #endregion

        #region Profession Grinds

        private void button103_Click(object sender, EventArgs e)
        {
            string message = "You have selected the Cooking Profession Grind.\n\nThis profile will grind cooking from 1-600 in Pandaria (only). It will purchase all training and needed mats, and will stop if you don't have enough money.\nRecommended 85+, flying for best results.\n\nContinue?";
            string title = "Cooking Grind";
            int start = 3000; // Cooking Grind
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button102_Click(object sender, EventArgs e)
        {
            // Fishing Profession Grinder
        }

        #endregion

        #region Garrison Profiles

        private void button140_Click(object sender, EventArgs e)
        {
            // Farm Frostfire Ridge
            string message = "You have selected the Draenor Mining/Herbalism Farm in Frostfire Ridge.\n\nThis will move to Frostfire Ridge and farm for ore and herbs (if you are capable of both).\n\nContinue?";
            string title = "Herb and Mining Farm";
            int start = 4001; // Frostfire Ridge Farming
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button149_Click(object sender, EventArgs e)
        {
            // Farm Gorgrond Ridge
            string message = "You have selected the Draenor Mining/Herbalism Farm in Gorgrond.\n\nThis will move to Gorgrond and farm for ore and herbs (if you are capable of both).\n\nContinue?";
            string title = "Herb and Mining Farm";
            int start = 4002; // Gorgrond Farming
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        private void button155_Click(object sender, EventArgs e)
        {
            // Garrison Full Clear
            string message = "You have selected the Draenor Garrison Full Clear.\n\nThis will head to your garrison, grab the apexis daily for you, pickup Garrison Cache, Herb and Mine work orders, restock them, grab all Herb and Mine nodes, and do the fishing daily within the Garrison (does not travel, may take longer than in the world).\n\nContinue?";
            string title = "Garrison Full Clear";
            int start = 4000; // WoD Garrison Clear
            bool allowed = BrodiesPlugin.CheckPremium();
            StartProfileOnClick(message, title, start, allowed);
        }

        #endregion

    }
}
